﻿#pragma once
//【说明】
//定义一种链式队列 

//【头文件包含】
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>

#include"BinaryTree.h"
//【自定义配置】
typedef BTNode* QNDataType;


//【结构体声明】
/*单向链表结构*/typedef struct QueueNode 
{
	QNDataType data;//指本空间元素
	struct QueueNode* next;//表示下一个节点指针
}QN;

/*队列头尾指针结构体*/typedef struct Queue
{
	QN* head;//表示队列头结点
	QN* tail;//表示队列尾结点
}Que;


//【函数声明】
/*队列初始化*/void QueueInit(Que* pq);
/*队列空间销毁*/void QueueDestroy(Que* pq);
/*队列数据插入*/void QueuePush(Que* pq, QNDataType x);
/*队列数据删除*/void QueuePop(Que* pq);
/*队列队头数据提取*/QNDataType QueueFront(Que* pq);
/*队列队尾数据提取*/QNDataType QueueBack(Que* pq);
/*队列大小计算*/int QueueSize(Que* pq);
/*队列空判断*/bool QueueEmpty(Que* pq);
/*队列打印*/void QueuePrint(Que* pq);
/*队列反向打印*/void QueuePrintRev(Que* pq);
/**/
/**/
